MODULE md1_LIP3_hermite

   USE md1_global_types
   USE md1_global_consts
   IMPLICIT NONE
   PRIVATE
   ! Public procedures
   PUBLIC :: LIP3_M10,   &
             LIP3_M20,   &
             LIP3_M30,   &
             LIP3_M40

CONTAINS

!-------------------------------------------------------------------------------

   FUNCTION LIP3_M10(p,Q,lambda)

      IMPLICIT NONE
      REAL(REALK), INTENT(IN) :: p, Q, lambda
      REAL(REALK) :: LIP3_M10

      LIP3_M10 = dble(p ** (-0.5D1 / 0.2D1)) * (0.12D2 * exp(dble(p    &
        * (9 * lambda ** 2 + Q ** 2))) * dble(lambda) * dble(Q ** 2)    &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))    &
        * dble(p ** 2) - 0.22D2 * exp(dble(9 * p * lambda ** 2))    &
        * dble(lambda ** 2) * dble(p ** (0.3D1 / 0.2D1)) - 0.2D1    &
        * exp(dble(9 * p * lambda ** 2)) * dble(p ** (0.3D1 / 0.2D1))    &
        * dble(Q ** 2) + 0.12D2 * exp(dble(9 * p * lambda ** 2))    &
        * dble(lambda) * dble(p ** (0.3D1 / 0.2D1)) * dble(Q) - 0.2D1    &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) * dble(Q ** 3)    &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))    &
        * dble(p ** 2) + 0.12D2 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(lambda ** 3) * sqrt(0.3141592654D1) * erf(sqrt(dble(p))    &
        * dble(Q)) * dble(p ** 2) - 0.3D1 * exp(dble(p * (9 * lambda ** 2    &
        + Q ** 2))) * dble(Q) * sqrt(0.3141592654D1) * erf(sqrt(dble(p))    &
        * dble(Q)) * dble(p) + 0.6D1 * exp(dble(p * (9 * lambda ** 2    &
        + Q ** 2))) * dble(lambda) * sqrt(0.3141592654D1)    &
        * erf(sqrt(dble(p)) * dble(Q)) * dble(p) - 0.2D1 * exp(dble(9    &
        * p * lambda ** 2)) * sqrt(dble(p)) - 0.22D2 * exp(dble(p * (9    &
        * lambda ** 2 + Q ** 2))) * dble(lambda ** 2) * dble(Q)    &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q)) * dble(p**2)    &
        - 0.6D1 * dble(Q) * exp(dble(6 * p * Q * lambda)) * dble(lambda)    &
        * dble(p ** (0.3D1 / 0.2D1)) + 0.4D1 * exp(dble(6 * p * Q    &
        * lambda)) * dble(lambda ** 2) * dble(p ** (0.3D1 / 0.2D1))    &
        + 0.2D1 * dble(Q ** 2) * exp(dble(6 * p * Q * lambda))    &
        * dble(p ** (0.3D1 / 0.2D1)) + 0.6D1 * dble(lambda)    &
        * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda) * sqrt(dble(p))    &
        - sqrt(dble(p)) * dble(Q)) * dble(p) * exp(dble(p * (9    &
        * lambda ** 2 + Q ** 2))) - 0.2D1 * dble(Q ** 3)    &
        * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda) * sqrt(dble(p))    &
        - sqrt(dble(p)) * dble(Q)) * dble(p ** 2) * exp(dble(p * (9    &
        * lambda ** 2 + Q ** 2))) - 0.22D2 * dble(lambda ** 2) * dble(Q)    &
        * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda) * sqrt(dble(p))    &
        - sqrt(dble(p)) * dble(Q)) * dble(p ** 2) * exp(dble(p * (9    &
        * lambda ** 2 + Q ** 2))) - 0.3D1 * dble(Q) * sqrt(0.3141592654D1)    &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))    &
        * dble(Q)) * dble(p) * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))    &
        + 0.12D2 * dble(lambda ** 3) * sqrt(0.3141592654D1) * erf(0.3D1    &
        * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q))    &
        * dble(p ** 2) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.2D1    &
        * exp(dble(6 * p * Q * lambda)) * sqrt(dble(p)) + 0.12D2    &
        * dble(lambda) * dble(Q ** 2) * sqrt(0.3141592654D1) * erf(0.3D1    &
        * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q))    &
        * dble(p ** 2) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))))    &
        * exp(-dble(p * (9 * lambda ** 2 + Q ** 2))) / dble(lambda ** 3)    &
        / 0.24D2

   END FUNCTION LIP3_M10

!-------------------------------------------------------------------------------

   FUNCTION LIP3_M20(p,Q,lambda)

      IMPLICIT NONE
      REAL(REALK), INTENT(IN) :: p, Q, lambda
      REAL(REALK) :: LIP3_M20

      LIP3_M20 =  dble(p ** (-0.5D1 / 0.2D1)) * (-0.10D2 * exp(dble(p   &
        * (9 * lambda ** 2 + Q ** 2))) * dble(lambda) * dble(Q ** 2)   &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p ** 2) + 0.12D2 * exp(dble(9 * p * lambda ** 2))   &
        * dble(lambda ** 2) * dble(p ** (0.3D1 / 0.2D1)) + 0.2D1   &
        * exp(dble(9 * p * lambda ** 2)) * dble(p ** (0.3D1 / 0.2D1))   &
        * dble(Q ** 2) - 0.10D2 * exp(dble(9 * p * lambda ** 2))   &
        * dble(p ** (0.3D1 / 0.2D1)) * dble(lambda) * dble(Q) + 0.2D1   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) * dble(Q ** 3)   &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p ** 2) + 0.3D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(Q) * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p) - 0.5D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(lambda) * sqrt(0.3141592654D1) * erf(sqrt(dble(p))   &
        * dble(Q)) * dble(p) + 0.2D1 * exp(dble(9 * p * lambda ** 2))   &
        * sqrt(dble(p)) + 0.12D2 * exp(dble(p * (9 * lambda ** 2   &
        + Q ** 2))) * dble(lambda ** 2) * dble(Q) * sqrt(0.3141592654D1)   &
        * erf(sqrt(dble(p)) * dble(Q)) * dble(p ** 2) - 0.10D2   &
        * dble(p ** 2) * dble(lambda) * dble(Q ** 2) * sqrt(0.3141592654D1)   &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))   &
        * dble(Q)) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) - 0.2D1   &
        * dble(Q ** 2) * exp(dble(6 * p * lambda * Q)) * dble(p ** (0.3D1   &
        / 0.2D1)) - 0.5D1 * dble(p) * dble(lambda) * sqrt(0.3141592654D1)   &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))   &
        * dble(Q)) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.4D1   &
        * dble(Q) * exp(dble(6 * p * lambda * Q)) * dble(lambda)   &
        * dble(p ** (0.3D1 / 0.2D1)) + 0.12D2 * dble(lambda ** 2)   &
        * dble(p ** 2) * dble(Q) * sqrt(0.3141592654D1) * erf(0.3D1   &
        * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q))   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.3D1 * dble(p)   &
        * dble(Q) * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda)   &
        * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q)) * exp(dble(p * (9   &
        * lambda ** 2 + Q ** 2))) + 0.2D1 * dble(p ** 2) * dble(Q ** 3)   &
        * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda) * sqrt(dble(p))   &
        - sqrt(dble(p)) * dble(Q)) * exp(dble(p * (9 * lambda ** 2   &
        + Q ** 2))) - 0.2D1 * exp(dble(6 * p * lambda * Q))   &
        * sqrt(dble(p))) * exp(-dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        / dble(lambda ** 3) / 0.8D1

   END FUNCTION LIP3_M20

!-------------------------------------------------------------------------------

   FUNCTION LIP3_M30(p,Q,lambda)

      IMPLICIT NONE
      REAL(REALK), INTENT(IN) :: p, Q, lambda
      REAL(REALK) :: LIP3_M30

      LIP3_M30 = -dble(p ** (-0.5D1 / 0.2D1)) * (-0.8D1 * exp(dble(p * (9   &
        * lambda ** 2 + Q ** 2))) * dble(lambda) * dble(Q ** 2)   &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p ** 2) + 0.6D1 * exp(dble(9 * p * lambda ** 2))   &
        * dble(lambda ** 2) * dble(p ** (0.3D1 / 0.2D1)) + 0.2D1   &
        * exp(dble(9 * p * lambda ** 2)) * dble(p ** (0.3D1 / 0.2D1))   &
        * dble(Q ** 2) - 0.8D1 * exp(dble(9 * p * lambda ** 2))   &
        * dble(p ** (0.3D1 / 0.2D1)) * dble(lambda) * dble(Q) + 0.2D1   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) * dble(Q ** 3)   &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p ** 2) + 0.3D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(Q) * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p) - 0.4D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(lambda) * sqrt(0.3141592654D1) * erf(sqrt(dble(p))   &
        * dble(Q)) * dble(p) + 0.2D1 * exp(dble(9 * p * lambda ** 2))   &
        * sqrt(dble(p)) + 0.6D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(lambda ** 2) * dble(Q) * sqrt(0.3141592654D1)   &
        * erf(sqrt(dble(p)) * dble(Q)) * dble(p ** 2) - 0.8D1   &
        * dble(p ** 2) * dble(lambda) * dble(Q ** 2) * sqrt(0.3141592654D1)   &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))   &
        * dble(Q)) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) - 0.2D1   &
        * dble(Q ** 2) * exp(dble(6 * p * lambda * Q)) * dble(p ** (0.3D1   &
        / 0.2D1)) - 0.4D1 * dble(p) * dble(lambda) * sqrt(0.3141592654D1)   &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))   &
        * dble(Q)) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.2D1   &
        * dble(Q) * exp(dble(6 * p * lambda * Q)) * dble(lambda)   &
        * dble(p ** (0.3D1 / 0.2D1)) + 0.6D1 * dble(lambda ** 2)   &
        * dble(p ** 2) * dble(Q) * sqrt(0.3141592654D1) * erf(0.3D1   &
        * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q))   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.3D1 * dble(p)   &
        * dble(Q) * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda)   &
        * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q)) * exp(dble(p * (9   &
        * lambda ** 2 + Q ** 2))) + 0.2D1 * dble(p ** 2) * dble(Q ** 3)   &
        * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda) * sqrt(dble(p))   &
        - sqrt(dble(p)) * dble(Q)) * exp(dble(p * (9 * lambda ** 2   &
        + Q ** 2))) - 0.2D1 * exp(dble(6 * p * lambda * Q)) * sqrt(dble(p)))   &
        * exp(-dble(p * (9 * lambda ** 2 + Q ** 2))) / dble(lambda ** 3)   &
        / 0.8D1

   END FUNCTION LIP3_M30

!-------------------------------------------------------------------------------

   FUNCTION LIP3_M40(p,Q,lambda)

      IMPLICIT NONE
      REAL(REALK), INTENT(IN) :: p, Q, lambda
      REAL(REALK) :: LIP3_M40

      LIP3_M40 = dble(p ** (-0.5D1 / 0.2D1)) * (-0.6D1 * exp(dble(p * (9   &
        * lambda ** 2 + Q ** 2))) * dble(lambda) * dble(Q ** 2)   &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p ** 2) + 0.4D1 * exp(dble(9 * p * lambda ** 2))   &
        * dble(lambda ** 2) * dble(p ** (0.3D1 / 0.2D1)) + 0.2D1   &
        * exp(dble(9 * p * lambda ** 2)) * dble(p ** (0.3D1 / 0.2D1))   &
        * dble(Q ** 2) - 0.6D1 * exp(dble(9 * p * lambda ** 2))   &
        * dble(p ** (0.3D1 / 0.2D1)) * dble(lambda) * dble(Q) + 0.2D1   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) * dble(Q ** 3)   &
        * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p ** 2) + 0.3D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(Q) * sqrt(0.3141592654D1) * erf(sqrt(dble(p)) * dble(Q))   &
        * dble(p) - 0.3D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(lambda) * sqrt(0.3141592654D1) * erf(sqrt(dble(p))   &
        * dble(Q)) * dble(p) + 0.2D1 * exp(dble(9 * p * lambda ** 2))   &
        * sqrt(dble(p)) + 0.4D1 * exp(dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        * dble(lambda ** 2) * dble(Q) * sqrt(0.3141592654D1)   &
        * erf(sqrt(dble(p)) * dble(Q)) * dble(p ** 2) - 0.6D1   &
        * dble(p ** 2) * dble(lambda) * dble(Q ** 2) * sqrt(0.3141592654D1)   &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))   &
        * dble(Q)) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) - 0.2D1   &
        * dble(Q ** 2) * exp(dble(6 * p * lambda * Q)) * dble(p ** (0.3D1   &
        / 0.2D1)) - 0.4D1 * exp(dble(6 * p * lambda * Q))   &
        * dble(lambda ** 2) * dble(p ** (0.3D1 / 0.2D1)) + 0.2D1   &
        * dble(p ** 2) * dble(Q ** 3) * sqrt(0.3141592654D1) * erf(0.3D1   &
        * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q))   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.4D1   &
        * dble(lambda ** 2) * dble(p ** 2) * dble(Q) * sqrt(0.3141592654D1)   &
        * erf(0.3D1 * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p))   &
        * dble(Q)) * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) + 0.3D1   &
        * dble(p) * dble(Q) * sqrt(0.3141592654D1) * erf(0.3D1   &
        * dble(lambda) * sqrt(dble(p)) - sqrt(dble(p)) * dble(Q))   &
        * exp(dble(p * (9 * lambda ** 2 + Q ** 2))) - 0.2D1 * exp(dble(6   &
        * p * lambda * Q)) * sqrt(dble(p)) - 0.3D1 * dble(p) * dble(lambda)   &
        * sqrt(0.3141592654D1) * erf(0.3D1 * dble(lambda) * sqrt(dble(p))   &
        - sqrt(dble(p)) * dble(Q)) * exp(dble(p * (9 * lambda ** 2   &
        + Q ** 2)))) * exp(-dble(p * (9 * lambda ** 2 + Q ** 2)))   &
        / dble(lambda ** 3) / 0.24D2

END FUNCTION LIP3_M40

!-------------------------------------------------------------------------------

END MODULE md1_LIP3_hermite


